package com.example.springframework.beans.factory;

import com.example.springframework.beans.BeansException;

/**
 * @fileName: {@link BeanFactory}
 * @author: yyfl
 * @date: 2023/2/23 14:54
 * @description:
 * @history:
 *
 * 主要作用是：统一了调用入口进行各种实现
 *
 * 第一步 先定义一个Bean工厂接口，实现的话由AbstractBeanFactory来实现
 *      这样统一使用模板模式的方式可以统一收口通用核心方法的调用逻辑和方法定义
 *      也就很好的控制了后续的实现者不用关心调用逻辑，按照统一方法执行，那么类的继承者只要关心具体方法的实现逻辑就行了
 */
public interface BeanFactory {

    /**
     * 获取Bean实例的统一入口
     *
     * @param name Bean名称
     * @return Bean实例
     */
    Object getBean(String name) throws BeansException;

}
